原始题目:剑指 Offer 64. 求1+2+…+n (opens new window)

解题思路:

通过递归来实现循环的效果,通过递归函数的返回值来决定要不要继续递归。

代码:

class Solution {
    int ans = 0;

    public int sumNums(int n) {
        sum(n);
        return ans;
    }

    private boolean sum(int n) {
        ans += n;
        return n > 0 && sum(n - 1);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

复杂度分析

  • 时间复杂度O(N)O(N)NN 为输入参数,需要进行 NN 次递归,每次递归的运算使用 O(1)O(1) 的时间。
  • 空间复杂度O(N)O(N):需要进行 NN 次递归,占用 O(N)O(N) 的栈空间。
上次更新: 2023/10/15